MIME-Version: 1.0
Server: CERN/3.0
Date: Monday, 06-Jan-97 21:38:05 GMT
Content-Type: text/html
Content-Length: 2881
Last-Modified: Monday, 11-Mar-96 06:47:52 GMT

<html>
<head>
<title>Esterel and its Compiler</title>
</head>

<body bgcolor="#ffffff">

<p>

<h3>The Esterel language</h3>

	Esterel is a synchronous programming language for reactive
 systems. Esterel has a precisely defined mathematical semantics
 intended for programming the class of deterministic reactive systems
 that wait for a set of possibly simultaneous inputs, react to the
 inputs by computing and producing outputs, and then quiesce, waiting
 for new inputs. Esterel is based on the ``synchrony hypothesis,''
 which stipulates that every reaction to a set of inputs is considered
 to be instantaneous. The programming model in Esterel is the
 specification of components, or modules, that run in parallel.
 Modules communicate with each other and the outside world through
 signals, which are broadcast and may carry values of arbitrary types.
 Consistent with the synchrony hypothesis, the emission and reception
 of signals is considered to be instantaneous.

<p>

	Esterel allows only deterministic behaviors to be specified: the
 inputs to every reaction (and the current values of variables) fully
 determine the outputs emitted in that reaction as well as the
 input-output behavior of the rest of the program.  Along with the
 synchrony hypothesis, both communication and pre-emption preserve
 determinism.  Furthermore, all internal communication is compiled
 away, and a single deterministic finite state machine is generated by
 the compiler.  Thus, the parallelism in Esterel is a structuring tool
 for programming convenience, and does not incur any run-time overhead
 --- the compiler automatically performs the complex interleaving
 between parallel modules.  Furthermore, since this implementation is
 a finite state machine, the maximum amount of time taken by any
 reaction can be accurately bounded if the execution times of the
 transitions are known.

<h3>The compilers</h3>

	Esterel has efficient compiler implementations based on
 well-defined mathematical semantics. These are two implementations:

<ul>

	<li>The CMA Esterel compiler is provided by the <a
	href="http://www.cma.fr" target="_top">Ecole des Mines de Paris (CMA)</a>
	and <a href="http://www.inria.fr" target="_top">INRIA</a>, and written by
	Jean-Paul Rigault, Jean-Marc Tanzi, Frederic Mignard and
	Jean-Pierre Paris. It can be obtained by contacting <a
	href="mailto:esterel-request@cma.cma.fr">&lt;esterel-request@cma.cma.fr&gt;</a>.
	This is the Esterel <a href="http://cma.cma.fr/Esterel/" target="_top">home</a> compiler.

<p>

	<li><a href=http://www.eecs.berkeley.edu/~sedwards/  target="_top">Stephen
	Edwards</a> has written a non-commercial Esterel compiler,
	available through <a
	href=ftp://ic.eecs.berkeley.edu/pub/Esterel>ftp</a>
	(~27Kb). (Note however some of the tools in TempEst will most
	likely not work with this compiler.)

</ul>


<p>

</body>
</html>
